﻿using System;
using System.Windows.Input;
using System.Windows.Controls;

namespace MMK.Paket_Tracker.Runtime.Commands
{
    /// <summary>
    /// RoutedUICommand based class for new packets
    /// </summary>
    internal class NewPacket : RoutedUICommand
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="NewPacket"/> class.
        /// </summary>
        public NewPacket() : base("Start with new Packet", Names.NewPacket, typeof(Button)) { }
    }

    /// <summary>
    /// RoutedUICommand based class to get a status for a sent packet
    /// </summary>
    internal class GetStatus : RoutedUICommand
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="GetStatus"/> class.
        /// </summary>
        public GetStatus() : base("Get status of a sent packet", Names.GetStatus, typeof(Button)) { }
    }

    /// <summary>
    /// RoutedUICommand based class to go back to the screen before
    /// </summary>
    internal class GoBack : RoutedUICommand
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="GoBack"/> class.
        /// </summary>
        public GoBack() : base("Go back to the screen before", Names.GoBack, typeof(Button)) { }
    }

    /// <summary>
    /// RoutedUICommand based class to go to the next screen
    /// </summary>
    internal class GoOn : RoutedUICommand
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="GoOn"/> class.
        /// </summary>
        public GoOn() : base("Go to the next screen", Names.GoOn, typeof(Button)) { }
    }

    /// <summary>
    /// RoutedUICommand based class to change the adress of the sender
    /// </summary>
    internal class ChangeSender : RoutedUICommand
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="ChangeSender"/> class.
        /// </summary>
        public ChangeSender() : base("Change the sender adress",Names.ChangeSender, typeof(Button)) { }
    }

    /// <summary>
    /// RoutedUICommand based class to change the adress of the receiver
    /// </summary>
    internal class ChangeReceiver : RoutedUICommand
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="ChangeReceiver"/> class.
        /// </summary>
        public ChangeReceiver() : base("Change the receiver adress",Names.ChangeReceiver,typeof(Button)) { }
    }

    /// <summary>
    /// RoutedUICommand based class to change the weight and price
    /// </summary>
    internal class ChangeWeight : RoutedUICommand
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="ChangeWeight"/> class.
        /// </summary>
        public ChangeWeight() : base("Change the weight and price", Names.ChangeWeight, typeof(Button)) { }
    }


    /// <summary>
    /// Static class with constant names for commands.
    /// </summary>
    public static class Names
    {
        /// <summary>
        /// Constant for command NewPacket
        /// </summary>
        public const String NewPacket = "NewPacket";
        /// <summary>
        /// Constant for command GetStatus
        /// </summary>
        public const String GetStatus = "GetStatus";
        /// <summary>
        /// Constant for command GoBack
        /// </summary>
        public const String GoBack = "GoBack";
        /// <summary>
        /// Constant for command GoOn
        /// </summary>
        public const String GoOn = "GoOn";
        /// <summary>
        /// Constant for command ChangeSender
        /// </summary>
        public const String ChangeSender = "ChangeSender";
        /// <summary>
        /// Constant for command ChangeReceiver
        /// </summary>
        public const String ChangeReceiver = "ChangeReceiver";
        /// <summary>
        /// Constant for command ChangeWeight
        /// </summary>
        public const String ChangeWeight = "ChangeWeight";

    }
}
